/************************************************************************************************************
	(C) www.dhtmlgoodies.com, October 2005

	This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.

	Terms of use:
	You are free to use this script as long as the copyright message is kept intact. However, you may not
	redistribute, sell or repost it without our permission.

	Updated:

		March, 14th, 2006 - Create new tabs dynamically
		March, 15th, 2006 - Dynamically delete a tab

	Thank you!

	www.dhtmlgoodies.com
	Alf Magne Kalleland

	************************************************************************************************************/
var textPadding = 3; // Padding at the left of tab text - bigger value gives you wider tabs
var strictDocType = true;
var content__maxNumberOfTabs = 6;	// Maximum number of tabs

/* Don't change anything below here */
var dhtmlgoodies_tabObj = new Array();
var activeTabIndex = new Array();
var MSIE = navigator.userAgent.indexOf('MSIE')>=0?true:false;

var regExp = new RegExp(".*MSIE ([0-9]\.[0-9]).*","g");
var navigatorVersion = navigator.userAgent.replace(regExp,'$1');

var ajaxObjects = new Array();
var content__countTabs = new Array();
var content_Height = new Array();
var tabDivCounter = 0;
var closeImageHeight = 8;	// Pixel height of close buttons
var closeImageWidth = 8;	// Pixel height of close buttons


function setPadding(obj,padding){
    var span = obj.getElementsByTagName('SPAN')[0];
    span.style.paddingLeft = padding + 'px';
    span.style.paddingRight = padding + 'px';
}

function showTab(parentId,tabIndex)
{
    var tabName = getTabTitleByIndex(tabIndex);
    oke(tabName);
    
    var parentId_div = parentId + "_";
    if(!document.getElementById('content_' + parentId_div + tabIndex)){
        return;
    }
    if(activeTabIndex[parentId]>=0){
        if(activeTabIndex[parentId]==tabIndex){
            return;
        }

        var obj = document.getElementById('tab_'+parentId_div + activeTabIndex[parentId]);

        obj.className='tabInactive';
        var img = obj.getElementsByTagName('IMG')[0];
        if(img.src.indexOf('tab_')==-1)img = obj.getElementsByTagName('IMG')[1];
        img.src = 'assets/img/tab_right_inactive.gif';
        document.getElementById('content_' + parentId_div + activeTabIndex[parentId]).style.display='none';
    }

    var thisObj = document.getElementById('tab_'+ parentId_div +tabIndex);

    thisObj.className='tabActive';
    var img = thisObj.getElementsByTagName('IMG')[0];
    if(img.src.indexOf('tab_')==-1)img = thisObj.getElementsByTagName('IMG')[1];
    img.src = 'assets/img/tab_right_active.gif';

    document.getElementById('content_' + parentId_div + tabIndex).style.display='block';
    activeTabIndex[parentId] = tabIndex;


    var parentObj = thisObj.parentNode;
    var aTab = parentObj.getElementsByTagName('DIV')[0];
    countObjects = 0;
    var startPos = 2;
    var previousObjectActive = false;
    while(aTab){
        if(aTab.tagName=='DIV'){
            if(previousObjectActive){
                previousObjectActive = false;
                startPos-=2;
            }
            if(aTab==thisObj){
                startPos-=2;
                previousObjectActive=true;
                setPadding(aTab,textPadding+1);
            }else{
                setPadding(aTab,textPadding);
            }

            aTab.style.left = startPos + 'px';
            countObjects++;
            startPos+=2;
        }
        aTab = aTab.nextSibling;
    }

    return;
}

function tabClick()
{
    var idArray = this.id.split('_');
    showTab(this.parentNode.parentNode.id,idArray[idArray.length-1].replace(/[^0-9]/gi,''));

}

function rolloverTab()
{
    if(this.className.indexOf('tabInactive')>=0){
        this.className='inactiveTabOver';
        var img = this.getElementsByTagName('IMG')[0];
        if(img.src.indexOf('tab_')<=0)img = this.getElementsByTagName('IMG')[1];
        img.src = 'assets/img/tab_right_over.gif';
    }

}
function rolloutTab()
{
    if(this.className ==  'inactiveTabOver'){
        this.className='tabInactive';
        var img = this.getElementsByTagName('IMG')[0];
        if(img.src.indexOf('tab_')<=0)img = this.getElementsByTagName('IMG')[1];
        img.src = 'assets/img/tab_right_inactive.gif';
    }

}

function hoverTabViewCloseButton()
{
    this.src = this.src.replace('close.gif','close_over.gif');
}

function stopHoverTabViewCloseButton()
{
    this.src = this.src.replace('close_over.gif','close.gif');
}

function initTabs(mainContainerID,tabTitles,activeTab,width,height,closeButtonArray,additionalTab)
{
    if(!closeButtonArray)closeButtonArray = new Array();

    if(!additionalTab || additionalTab=='undefined'){
        dhtmlgoodies_tabObj[mainContainerID] = document.getElementById(mainContainerID);
        width = width + '';
        if(width.indexOf('%')<0)width= width + 'px';
        // dhtmlgoodies_tabObj[mainContainerID].style.width = width;

        var originalHeight = height;
        height = height + '';
        if(height.length>0){
            if(height.indexOf('%')<0) {
                height = Number(height) + 50 + 'px';
            }
            
            dhtmlgoodies_tabObj[mainContainerID].style.height = height;
        }

        height = originalHeight + 'px';

        content_Height[mainContainerID] = height;

        var tabDiv = document.createElement('DIV');
        var firstDiv = dhtmlgoodies_tabObj[mainContainerID].getElementsByTagName('DIV')[0];

        dhtmlgoodies_tabObj[mainContainerID].insertBefore(tabDiv,firstDiv);
        tabDiv.className = 'dhtmlgoodies_tabPane';
        content__countTabs[mainContainerID] = 0;

    }else{
        var tabDiv = dhtmlgoodies_tabObj[mainContainerID].getElementsByTagName('DIV')[0];
        var firstDiv = dhtmlgoodies_tabObj[mainContainerID].getElementsByTagName('DIV')[1];
        height = content_Height[mainContainerID];
        activeTab = content__countTabs[mainContainerID];


    }



    for(var no=0;no<tabTitles.length;no++){
        var aTab = document.createElement('DIV');
        aTab.id = 'tab_' + mainContainerID + "_" +  (no + content__countTabs[mainContainerID]);
        aTab.onmouseover = rolloverTab;
        aTab.onmouseout = rolloutTab;
        aTab.onclick = tabClick;
        aTab.className='tabInactive';
        tabDiv.appendChild(aTab);
        var span = document.createElement('SPAN');
        span.innerHTML = tabTitles[no];
        span.style.position = 'relative';
        aTab.appendChild(span);

        if(closeButtonArray[no]){
            var closeButton = document.createElement('IMG');
            closeButton.src = 'assets/img/close.gif';
            closeButton.height = closeImageHeight + 'px';
            closeButton.width = closeImageHeight + 'px';
            closeButton.setAttribute('height',closeImageHeight);
            closeButton.setAttribute('width',closeImageHeight);
            closeButton.style.position='absolute';
            closeButton.style.top = '6px';
            closeButton.style.right = '0px';
            closeButton.onmouseover = hoverTabViewCloseButton;
            closeButton.onmouseout = stopHoverTabViewCloseButton;

            span.innerHTML = span.innerHTML + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';

            var deleteTxt = span.innerHTML+'';

            closeButton.onclick = function(){
                deleteTab(this.parentNode.innerHTML)
            };
            span.appendChild(closeButton);
        }

        var img = document.createElement('IMG');
        img.valign = 'bottom';
        img.src = 'assets/img/tab_right_inactive.gif';
        // IE5.X FIX
        if((navigatorVersion && navigatorVersion<6) || (MSIE && !strictDocType)){
            img.style.styleFloat = 'none';
            img.style.position = 'relative';
            img.style.top = '4px'
            span.style.paddingTop = '4px';
            aTab.style.cursor = 'hand';
        }	// End IE5.x FIX
        aTab.appendChild(img);
    }

    var tabs = dhtmlgoodies_tabObj[mainContainerID].getElementsByTagName('DIV');
    var divCounter = 0;
    for(var no=0;no<tabs.length;no++){
        if(tabs[no].className=='dhtmlgoodies_aTab' && tabs[no].parentNode.id == mainContainerID){
            if(height.length>0)tabs[no].style.height = height;
            tabs[no].style.display='none';
            tabs[no].id = 'content_' + mainContainerID + "_" + divCounter;
            divCounter++;
        }
    }
    content__countTabs[mainContainerID] = content__countTabs[mainContainerID] + tabTitles.length;
    showTab(mainContainerID,activeTab);

    return activeTab;
}

function showAjaxTabContent(ajaxIndex,parentId,tabId)
{
    var obj = document.getElementById('content_'+parentId + '_' + tabId);
    obj.innerHTML = ajaxObjects[ajaxIndex].response;
}

function resetTabIds(parentId)
{
    var tabTitleCounter = 0;
    var tabContentCounter = 0;


    var divs = dhtmlgoodies_tabObj[parentId].getElementsByTagName('DIV');


    for(var no=0;no<divs.length;no++){
        if(divs[no].className=='dhtmlgoodies_aTab'){
            divs[no].id = 'content_' + parentId + '_' + tabTitleCounter;
            tabTitleCounter++;
        }
        if(divs[no].id.indexOf('tab_')>=0){
            divs[no].id = 'tab_' + parentId + '_' + tabContentCounter;
            tabContentCounter++;
        }


    }

    content__countTabs[parentId] = tabContentCounter;
}


function createNewTab(parentId,tabTitle,tabContent,tabContentUrl,closeButton)
{
    if(content__countTabs[parentId]>=content__maxNumberOfTabs)return;	// Maximum number of tabs reached - return
    var div = document.createElement('DIV');
    div.className = 'dhtmlgoodies_aTab';
    dhtmlgoodies_tabObj[parentId].appendChild(div);

    var tabId = initTabs(parentId,Array(tabTitle),0,'','',Array(closeButton),true);
    if(tabContent)div.innerHTML = tabContent;
    if(tabContentUrl){
        var ajaxIndex = ajaxObjects.length;
        ajaxObjects[ajaxIndex] = new sack();
        ajaxObjects[ajaxIndex].requestFile = tabContentUrl;	// Specifying which file to get

        ajaxObjects[ajaxIndex].onCompletion = function(){
            showAjaxTabContent(ajaxIndex,parentId,tabId);
        };	// Specify function that will be executed after file has been found
        ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function

    }

}

function getTabIndexByTitle(tabTitle)
{
    var regExp = new RegExp("(.*?)&nbsp.*$","gi");
    tabTitle = tabTitle.replace(regExp,'$1');
    for(var prop in dhtmlgoodies_tabObj){
        var divs = dhtmlgoodies_tabObj[prop].getElementsByTagName('DIV');
        for(var no=0;no<divs.length;no++){
            if(divs[no].id.indexOf('tab_')>=0){
                var span = divs[no].getElementsByTagName('SPAN')[0];
                var regExp2 = new RegExp("(.*?)&nbsp.*$","gi");
                var spanTitle = span.innerHTML.replace(regExp2,'$1');

                if(spanTitle == tabTitle){
                    var tmpId = divs[no].id.split('_');
                    return Array(prop,tmpId[tmpId.length-1].replace(/[^0-9]/g,'')/1);
                }
            }
        }
    }

    return -1;

}

function getTabIndexByTitleDirect(tabTitle)
{
    var regExp = new RegExp("(.*?)&nbsp.*$","gi");
    tabTitle = tabTitle.replace(regExp,'$1');
    for(var prop in dhtmlgoodies_tabObj){
        var divs = dhtmlgoodies_tabObj[prop].getElementsByTagName('DIV');
        for(var no=0;no<divs.length;no++){
            if(divs[no].id.indexOf('tab_')>=0){
                var span = divs[no].getElementsByTagName('SPAN')[0];
                var regExp2 = new RegExp("(.*?)&nbsp.*$","gi");
                var spanTitle = span.innerHTML.replace(regExp2,'$1');

                if(spanTitle == tabTitle){
                    var tmpId = divs[no].id.split('_');
                    return tmpId.pop();
                }
            }
        }
    }

    return -1;
}

function getTabTitleByIndex(index) {
    var div = document.getElementById("tab_chat_" + index);
    var span = div.firstChild;

    var regExp2 = new RegExp("(.*?)&nbsp.*$","gi");
    var spanTitle = span.innerHTML.replace(regExp2,'$1');

    return spanTitle;
}

/* Call this function if you want to display some content from external file in one of the tabs
	Arguments: Title of tab and relative path to external file */

function addAjaxContentToTab(tabTitle,tabContentUrl)
{
    var index = getTabIndexByTitle(tabTitle);
    if(index!=-1){
        var ajaxIndex = ajaxObjects.length;

        tabId = index[1];
        parentId = index[0];


        ajaxObjects[ajaxIndex] = new sack();
        ajaxObjects[ajaxIndex].requestFile = tabContentUrl;	// Specifying which file to get

        ajaxObjects[ajaxIndex].onCompletion = function(){
            showAjaxTabContent(ajaxIndex,parentId,tabId);
        };	// Specify function that will be executed after file has been found
        ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function

    }
}

function deleteTab(tabLabel, tabIndex, parentId)
{
    if(tabLabel){
        var index = getTabIndexByTitle(tabLabel);
        if(index!=-1){
            deleteTab(false,index[1],index[0]);
        }

    }else if(tabIndex>=0){
        if(document.getElementById('tab_' + parentId + '_' + tabIndex)){
            var obj = document.getElementById('tab_' + parentId + '_' + tabIndex);
            var id = obj.parentNode.parentNode.id;
            obj.parentNode.removeChild(obj);
            var obj2 = document.getElementById('content_' + parentId + '_' + tabIndex);
            obj2.parentNode.removeChild(obj2);
            resetTabIds(parentId);
            activeTabIndex[parentId]=-1;
            showTab(parentId,'0');
        }
    }
}

	